package main

import "fmt"

// 人
type Person struct {
	name string
	sex  string
	age  int
}

// 学生
type Student struct {
	*Person
	id   int
	addr string
}

func main() {
	s1 := Student{&Person{"5lmh", "man", 18}, 1, "bj"}
	fmt.Println(s1)
	fmt.Println(s1.name)
	fmt.Println(s1.Person.name)
}

/**
匿名字段与面向对象
结构体的匿名字段如果是结构体类型，那么该匿名字段就像是一个对父结构有继承权的子结构体。
通过匿名字段可以获得和继承类似的复用能力，依据编译器查找次序，只需在外层定义同名方法，就可以实现“override”
*/
